iOS17でjit with windows 第7夜
Celesteのmodの記事はいつ書くんですか
現在iOS17台のバージョンではWindowsのAltStoreとSideloadlyじゃjitを起動できなくて困ってたけど、なんとかする方法を見つけたのでやってみた ちなみに結構前からMacのAtlStoreならできるらしいけどMac買う気無いので
必要なモノ
PCのインターネット環境
Windows 11 バージョン2004(2020年リリース)以上
ワンチャンWindows10でできるかもしれないらしいけどツール作った海外ニキも俺も未検証
iOSバージョン17以上のデバイス
バージョン16とかだったらできないのかな、まあわざわざやる暇人なんていないけどね
開発者証明書を使用しているツールを使用してサイドロードされた JIT を必要とするアプリ
AltStoreかSideloadlyで対象アプリを入れた場合は気にしなくてOK ほかは知らん
手順
もうしてる人は不要だね
git clone https://github.com/fritzlb/iOS17-JIT-WIN.git
gitがない人は入れるか
個人的にはgit無いなら入れたほうがいいと思うな
ソフトを入れるのはここまでで終了、ここからjitコンパイラーの起動
3. 対象アプリのBundleIDの取得
iOSデバイスをPCにUSB経由で繋いで
https://scrapbox.io/files/662e3c3c4a19850024746feb.png
タスクバーにあるアイコンを右クリックして、jitしたい対象のアプリを探し、かっこ()の間にあるやつをOCRするやらなんやらで抽出し、メモする
これがBundleIDってヤツだ、1回分かったら再インスコとかしない限り変わらないからどっかに保存しておこう
例として、今回の俺はpojavlauncherをjitしたいからnet.kdt.pojavlauncher.Q23327NB42をメモった
決してnet.kdt.pojavlauncherではないので注意
4. jitする
いろいろやる前にもしiOSデバイスがPCにUSB接続されていたら一旦外す
手順2でできたフォルダ内のopen terminal here.batをダブルクリックして実行
コンソールなウィンドウが出てきたらおk
https://scrapbox.io/files/662e3d34689d0500251fbbf3.png
次にiOSデバイスをUSB接続し、こいつが出るまで待つ
https://scrapbox.io/files/662e3e85e3919b002556a68b.png
次に、ウィンドウに
python jit_enabler_better.py {手順3で取得したBundleID}
と入力し、エンターを投下
俺の場合は
python jit_enabler_better.py net.kdt.pojavlauncher.Q23327NB42
と入力した
最初ならいろいろ許可しますかとか出てくるけど全部許可、iPhoneの方にも出てくるよ
うまくいけば次のようなログが流れる
code:log
Getting bundle ID...
Got bundle ID: {自分のBundleID}
starting tunnel to device...
(少しの間)
code:log
This might take a while. In case it freezes, either close this window and kill every python process in task manager or simply reboot your PC.
Sucessfully created tunnel: fd14:2d51:4f4e::1 51550
Manually trying to mount DeveloperDiskImage (this seems to prevent errors on some systems)...
Diskimage already mounted.
Starting app...
Started app. PID: 10550
Starting debug server...
Run debugging commands...
This might take a few minutes.
(少しの間)
スマホ側ではもうアプリが立ち上がっているが、予期せぬエラー防止のためにまだ触らないことをおすすめする
ちなみにこの間に操作しても反応せず、jitされた後に一気に操作される
(画面が更新されてないだけかもしてないけどこのことはこの記事とはあんまり関係ないので深掘りしない)
code:log
done.
終わり!おめでとう!!!!!
手順4のトラブルシューティング
一番エラーが出るところなので俺がやってて出たエラーを紹介
code:エラーその1
It seems like your device isn't connected. : [b'\x1b[32m2024-04-28 21:25:50\x1b[0m \x1b[35mmimic\x1b[0m \x1b[34mwintun32564\x1b[0m \x1b[1;30mINFO\x1b[0m WetestUsbFilter driver use current version: 11.36.33.666, 11.36.33.666 tested.\r\n', b'\x1b[32m2024-04-28 21:25:50\x1b[0m \x1b[35mmimic\x1b[0m \x1b[34mwintun32564\x1b[0m \x1b[1;30mINFO\x1b[0m WeTestUsbNcm driver use current version: 11.38.34.492, 11.36.59.886 tested.\r\n', b'\x1b[32m2024-04-28 21:25:50\x1b[0m \x1b[35mmimic\x1b[0m \x1b[34mwintun32564\x1b[0m \x1b[1;30mINFO\x1b[0m use existing WeTestUsbFilter driver.\r\n', b'\x1b[32m2024-04-28 21:25:50\x1b[0m \x1b[35mmimic\x1b[0m \x1b[34mwintun32564\x1b[0m \x1b[1;30mINFO\x1b[0m use existing WeTestUsbNcm driver.\r\n', b'\x1b[32m2024-04-28 21:25:52\x1b[0m \x1b[35mmimic\x1b[0m \x1b[34m__main__32564\x1b[0m \x1b[1;30mERROR\x1b[0m \x1b[31mDevice is not connected\x1b0m\r\n' iOSの接続に関するエラー
対処法
iOSデバイスをつなぎ直して、↓これ↓が出てきた瞬間にコマンドを実行
https://scrapbox.io/files/662e3e85e3919b002556a68b.png
iPhoneの方でPCから内容を見れるかどうかの許可を拒否していないか思い出す、拒否しちゃったなって場合はUSBをつなぎ直したら出てくるから許可する
使用しているUSBケーブルが通信ケーブルかどうかをエクスプローラーで判断する
https://scrapbox.io/files/662e4154f432c500239618e5.png
これがあればつながっている
ちなみに、2つ目の対処法がなってない場合(?)でもこいつが消えることがあるので注意が必要
code:エラーその2
Error launching the app. Did you specify the correct bundle ID? : Traceback (most recent call last):
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\__main__.py", line 156, in <module>
main()
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\__main__.py", line 98, in main
cli()
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1078, in main
rv = self.invoke(ctx)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\cli\cli_common.py", line 172, in wrap_callback_calling
callback(service_provider=service_provider, **kwargs)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\cli\developer.py", line 198, in launch
pid = process_control.launch(bundle_id=parsed_arguments0, arguments=parsed_arguments1:, File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\services\dvt\instruments\process_control.py", line 74, in launch
result = self._channel.receive_plist()
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\services\remote_server.py", line 261, in receive_plist
return self._service.recv_plist(self)0 File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\services\remote_server.py", line 438, in recv_plist
data = archiver.unarchive(data)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 23, in unarchive
return Unarchive(plist).top_object()
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 267, in top_object
return self.decode_object(self.top_uid)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 258, in decode_object
obj = klass.decode_archive(ArchivedObject(raw_obj, self))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\services\remote_server.py", line 126, in decode_archive
user_info = archive_obj.decode('NSUserInfo')
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 150, in decode
return self._unarchiver.decode_key(self.object, key)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 226, in decode_key
return self.decode_object(val)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 258, in decode_object
obj = klass.decode_archive(ArchivedObject(raw_obj, self))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 109, in decode_archive
val = archive_obj.decode_index(val_uidsi) File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 147, in decode_index
return self._unarchiver.decode_object(index)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 258, in decode_object
obj = klass.decode_archive(ArchivedObject(raw_obj, self))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\services\remote_server.py", line 126, in decode_archive
user_info = archive_obj.decode('NSUserInfo')
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 150, in decode
return self._unarchiver.decode_key(self.object, key)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 226, in decode_key
return self.decode_object(val)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 258, in decode_object
obj = klass.decode_archive(ArchivedObject(raw_obj, self))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 109, in decode_archive
val = archive_obj.decode_index(val_uidsi) File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 147, in decode_index
return self._unarchiver.decode_object(index)
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\bpylist2\archiver.py", line 258, in decode_object
obj = klass.decode_archive(ArchivedObject(raw_obj, self))
File "C:\Users\sennm\AppData\Local\Programs\Python\Python310\lib\site-packages\pymobiledevice3\services\remote_server.py", line 129, in decode_archive
raise DvtException(archive_obj.decode('NSUserInfo'))
pymobiledevice3.exceptions.DvtException: {'BSErrorCodeDescription': 'NotFound', 'NSLocalizedFailureReason': 'Application info provider (FBSApplicationLibrary) returned nil for "{正しくないBundleID}"'}
BundleIDが間違えてる!
対処法
手順3で取得したBundleIDを確認する
↓これは例
正解: net.kdt.pojavlauncher.Q23327NB42
不正解:net.kdt.pojavlauncher
BundleIDのコピペミスがないか確認する
code:エラーその3
ModuleNotFoundError: No module named 'pymobiledevice3'
Pythonのモジュール不足
対処法
install.batを実行する
これら以外のエラーが出た場合はめんどくさいけどこ↑こ↓を参照しよう せっかくなので開発者さんのTipsをガバ翻訳したやつを貼っておきますね
みんな困ってたから作ったで
公式から手に入るリリースバージョンのPojavlauncherはマイクラバージョン1.20が動かないで
Pojavlauncherの開発者版を試してみぃや
もしiPhone 15 proでdolphiniOSを使っててクラッシュしたらベータ版を使ってみぃや
うまくいかなかった時に完全なターミナル出力を渡してほしいんや、やってくれたらお助けがはるかに簡単になって、さらにバグ潰しに役に立つんや
この記事書いてる間に開発者ビルドだとマイクラ1.20動くってわかったからあとでやる
https://scrapbox.io/files/662e45b301b1e800243b30b5.png